From 15791c74cbc8efd124e74746f06201e6edec3d63 Mon Sep 17 00:00:00 2001 From: Romain Sertelon Date: Fri, 26 May 2017 23:00:45 +0200 Subject: [PATCH] Adds tests --- tests/bench.rs | 419 +++++++++++++++++++++++++++++--------------- tests/build.rs | 34 ++++ tests/check.rs | 31 ++++ tests/doc.rs | 31 ++++ tests/test.rs | 43 +++++ tests/workspaces.rs | 8 +- 6 files changed, 419 insertions(+), 147 deletions(-) diff --git a/tests/bench.rs b/tests/bench.rs index cf68a629e..9c848d0b1 100644 --- a/tests/bench.rs +++ b/tests/bench.rs @@ -16,7 +16,7 @@ fn cargo_bench_simple() { let p = project("foo") .file("Cargo.toml", &basic_bin_manifest("foo")) - .file("src/main.rs", r#" + .file("src/foo.rs", r#" #![feature(test)] extern crate test; @@ -44,7 +44,13 @@ fn cargo_bench_simple() { [COMPILING] foo v0.5.0 ({}) [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url())) - .with_stdout_contains("test bench_hello ... bench: [..]")); + .with_stdout(" +running 1 test +test bench_hello ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -79,7 +85,13 @@ fn bench_bench_implicit() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]mybench-[..][EXE] ", dir = prj.url())) - .with_stdout_contains("test run2 ... bench: [..]")); + .with_stdout(" +running 1 test +test run2 ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -114,7 +126,13 @@ fn bench_bin_implicit() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE] ", dir = prj.url())) - .with_stdout_contains("test run1 ... bench: [..]")); + .with_stdout(" +running 1 test +test run1 ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -144,7 +162,13 @@ fn bench_tarname() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]bin2-[..][EXE] ", dir = prj.url())) - .with_stdout_contains("test run2 ... bench: [..]")); + .with_stdout(" +running 1 test +test run2 ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -153,7 +177,7 @@ fn cargo_bench_verbose() { let p = project("foo") .file("Cargo.toml", &basic_bin_manifest("foo")) - .file("src/main.rs", r#" + .file("src/foo.rs", r#" #![feature(test)] extern crate test; fn main() {} @@ -163,10 +187,16 @@ fn cargo_bench_verbose() { assert_that(p.cargo_process("bench").arg("-v").arg("hello"), execs().with_stderr(&format!("\ [COMPILING] foo v0.5.0 ({url}) -[RUNNING] `rustc [..] src[/]main.rs [..]` +[RUNNING] `rustc [..] src[/]foo.rs [..]` [FINISHED] release [optimized] target(s) in [..] [RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] hello --bench`", url = p.url())) - .with_stdout_contains("test bench_hello ... bench: [..]")); + .with_stdout(" +running 1 test +test bench_hello ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -213,7 +243,7 @@ fn cargo_bench_failing_test() { let p = project("foo") .file("Cargo.toml", &basic_bin_manifest("foo")) - .file("src/main.rs", r#" + .file("src/foo.rs", r#" #![feature(test)] extern crate test; fn hello() -> &'static str { @@ -236,16 +266,18 @@ fn cargo_bench_failing_test() { execs().with_stdout("hello\n")); assert_that(p.cargo("bench"), - execs().with_stdout_contains("test bench_hello ... ") + execs().with_stdout_contains(" +running 1 test +test bench_hello ... ") .with_stderr_contains(format!("\ [COMPILING] foo v0.5.0 ({}) [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE] thread '[..]' panicked at 'assertion failed: \ - `(left == right)`[..]", p.url())) - .with_stderr_contains("[..]left: `\"hello\"`[..]") - .with_stderr_contains("[..]right: `\"nope\"`[..]") - .with_stderr_contains("[..]src[/]main.rs:14[..]") + `(left == right)` (left: \ + `\"hello\"`, right: `\"nope\"`)', src[/]foo.rs:14 +[..] +", p.url())) .with_status(101)); } @@ -295,8 +327,19 @@ fn bench_with_lib_dep() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE] [RUNNING] target[/]release[/]deps[/]baz-[..][EXE]", p.url())) - .with_stdout_contains("test lib_bench ... bench: [..]") - .with_stdout_contains("test bin_bench ... bench: [..]")); + .with_stdout(" +running 1 test +test lib_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test bin_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")) } #[test] @@ -347,7 +390,13 @@ fn bench_with_deep_lib_dep() { [COMPILING] bar v0.0.1 ({dir}) [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]bar-[..][EXE]", dir = p.url())) - .with_stdout_contains("test bar_bench ... bench: [..]")); + .with_stdout(" +running 1 test +test bar_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -388,8 +437,19 @@ fn external_bench_explicit() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE] [RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", p.url())) - .with_stdout_contains("test internal_bench ... bench: [..]") - .with_stdout_contains("test external_bench ... bench: [..]")); + .with_stdout(" +running 1 test +test internal_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test external_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")) } #[test] @@ -427,8 +487,19 @@ fn external_bench_implicit() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE] [RUNNING] target[/]release[/]deps[/]external-[..][EXE]", p.url())) - .with_stdout_contains("test internal_bench ... bench: [..]") - .with_stdout_contains("test external_bench ... bench: [..]")); + .with_stdout(" +running 1 test +test internal_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test external_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")) } #[test] @@ -476,13 +547,25 @@ fn pass_through_command_line() { [COMPILING] foo v0.0.1 ({dir}) [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url())) - .with_stdout_contains("test bar ... bench: [..]")); + .with_stdout(" +running 1 test +test bar ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); assert_that(p.cargo("bench").arg("foo"), execs().with_status(0) .with_stderr("[FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") - .with_stdout_contains("test foo ... bench: [..]")); + .with_stdout(" +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } // Regression test for running cargo-bench twice with @@ -547,7 +630,19 @@ fn lib_bin_same_name() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url())) - .with_stdout_contains_n("test [..] ... bench: [..]", 2)); + .with_stdout(" +running 1 test +test [..] ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test [..] ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")) } #[test] @@ -589,8 +684,19 @@ fn lib_with_standard_name() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]syntax-[..][EXE] [RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", dir = p.url())) - .with_stdout_contains("test foo_bench ... bench: [..]") - .with_stdout_contains("test bench ... bench: [..]")); + .with_stdout(" +running 1 test +test foo_bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -629,7 +735,13 @@ fn lib_with_standard_name2() { [COMPILING] syntax v0.0.1 ({dir}) [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]", dir = p.url())) - .with_stdout_contains("test bench ... bench: [..]")); + .with_stdout(" +running 1 test +test bench ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -694,8 +806,19 @@ fn bench_dylib() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench` [RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url())) - .with_stdout_contains_n("test foo ... bench: [..]", 2)); + .with_stdout(" +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); p.root().move_into_the_past(); assert_that(p.cargo("bench").arg("-v"), execs().with_status(0) @@ -705,7 +828,19 @@ fn bench_dylib() { [FINISHED] release [optimized] target(s) in [..] [RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench` [RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url())) - .with_stdout_contains_n("test foo ... bench: [..]", 2)); + .with_stdout(" +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -734,13 +869,25 @@ fn bench_twice_with_build_cmd() { [COMPILING] foo v0.0.1 ({dir}) [FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url())) - .with_stdout_contains("test foo ... bench: [..]")); + .with_stdout(" +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); assert_that(p.cargo("bench"), execs().with_status(0) .with_stderr("[FINISHED] release [optimized] target(s) in [..] [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") - .with_stdout_contains("test foo ... bench: [..]")); + .with_stdout(" +running 1 test +test foo ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -809,8 +956,19 @@ fn bench_with_examples() { [RUNNING] `{dir}[/]target[/]release[/]deps[/]testbench-[..][EXE] --bench` [RUNNING] `{dir}[/]target[/]release[/]deps[/]testb1-[..][EXE] --bench`", dir = p.root().display(), url = p.url())) - .with_stdout_contains("test bench_bench1 ... bench: [..]") - .with_stdout_contains("test bench_bench2 ... bench: [..]")); + .with_stdout(" +running 1 test +test bench_bench1 ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + + +running 1 test +test bench_bench2 ... bench: [..] 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +")); } #[test] @@ -845,7 +1003,13 @@ fn test_a_bench() { [COMPILING] foo v0.1.0 ([..]) [FINISHED] dev [unoptimized + debuginfo] target(s) in [..] [RUNNING] target[/]debug[/]deps[/]b-[..][EXE]") - .with_stdout_contains("test foo ... ok")); + .with_stdout(" +running 1 test +test foo ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured + +")); } #[test] @@ -879,44 +1043,6 @@ fn test_bench_no_run() { ")); } -#[test] -fn test_bench_no_fail_fast() { - if !is_nightly() { return } - - let p = project("foo") - .file("Cargo.toml", &basic_bin_manifest("foo")) - .file("src/foo.rs", r#" - #![feature(test)] - extern crate test; - fn hello() -> &'static str { - "hello" - } - - pub fn main() { - println!("{}", hello()) - } - - #[bench] - fn bench_hello(_b: &mut test::Bencher) { - assert_eq!(hello(), "hello") - } - - #[bench] - fn bench_nope(_b: &mut test::Bencher) { - assert_eq!("nope", hello()) - }"#); - - assert_that(p.cargo_process("bench").arg("--no-fail-fast"), - execs().with_status(101) - .with_stderr_contains("\ -[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") - .with_stdout_contains("running 2 tests") - .with_stderr_contains("\ -[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") - .with_stdout_contains("test bench_hello [..]") - .with_stdout_contains("test bench_nope [..]")); -} - #[test] fn test_bench_multiple_packages() { if !is_nightly() { return } @@ -987,10 +1113,20 @@ fn test_bench_multiple_packages() { execs().with_status(0) .with_stderr_contains("\ [RUNNING] target[/]release[/]deps[/]bbaz-[..][EXE]") - .with_stdout_contains("test bench_baz ... bench: [..]") + .with_stdout_contains(" +running 1 test +test bench_baz ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +") .with_stderr_contains("\ [RUNNING] target[/]release[/]deps[/]bbar-[..][EXE]") - .with_stdout_contains("test bench_bar ... bench: [..]")); + .with_stdout_contains(" +running 1 test +test bench_bar ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +")); } #[test] @@ -1043,27 +1179,47 @@ fn bench_all_workspace() { execs().with_status(0) .with_stderr_contains("\ [RUNNING] target[/]release[/]deps[/]bar-[..][EXE]") - .with_stdout_contains("test bench_bar ... bench: [..]") - .with_stderr_contains("\ + .with_stdout_contains(" +running 1 test +test bench_bar ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +") + .with_stderr_contains("\ [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") - .with_stdout_contains("test bench_foo ... bench: [..]")); + .with_stdout_contains(" +running 1 test +test bench_foo ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +")); } #[test] -fn bench_all_exclude() { +fn bench_all_virtual_manifest() { if !is_nightly() { return } - let p = project("foo") + let p = project("workspace") .file("Cargo.toml", r#" + [workspace] + members = ["foo", "bar"] + "#) + .file("foo/Cargo.toml", r#" [project] name = "foo" version = "0.1.0" - - [workspace] - members = ["bar", "baz"] "#) - .file("src/main.rs", r#" - fn main() {} + .file("foo/src/lib.rs", r#" + pub fn foo() {} + "#) + .file("foo/benches/foo.rs", r#" + #![feature(test)] + extern crate test; + + use test::Bencher; + + #[bench] + fn bench_foo(_: &mut Bencher) -> () { () } "#) .file("bar/Cargo.toml", r#" [project] @@ -1071,39 +1227,42 @@ fn bench_all_exclude() { version = "0.1.0" "#) .file("bar/src/lib.rs", r#" + pub fn bar() {} + "#) + .file("bar/benches/bar.rs", r#" #![feature(test)] - extern crate test; + use test::Bencher; + #[bench] - pub fn bar(b: &mut test::Bencher) { - b.iter(|| {}); - } - "#) - .file("baz/Cargo.toml", r#" - [project] - name = "baz" - version = "0.1.0" - "#) - .file("baz/src/lib.rs", r#" - #[test] - pub fn baz() { - break_the_build(); - } + fn bench_bar(_: &mut Bencher) -> () { () } "#); + // The order in which foo and bar are built is not guaranteed assert_that(p.cargo_process("bench") - .arg("--all") - .arg("--exclude") - .arg("baz"), + .arg("--all"), execs().with_status(0) - .with_stdout_contains("\ + .with_stderr_contains("\ +[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]") + .with_stdout_contains(" running 1 test -test bar ... bench: [..] ns/iter (+/- [..])")); +test bench_bar ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +") + .with_stderr_contains("\ +[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") + .with_stdout_contains(" +running 1 test +test bench_foo ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +")); } #[test] -fn bench_all_virtual_manifest() { +fn bench_virtual_manifest_all_implied() { if !is_nightly() { return } let p = project("workspace") @@ -1147,45 +1306,23 @@ fn bench_all_virtual_manifest() { "#); // The order in which foo and bar are built is not guaranteed - assert_that(p.cargo_process("bench") - .arg("--all"), + assert_that(p.cargo_process("bench"), execs().with_status(0) .with_stderr_contains("\ [RUNNING] target[/]release[/]deps[/]bar-[..][EXE]") - .with_stdout_contains("test bench_bar ... bench: [..]") - .with_stderr_contains("\ -[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") - .with_stdout_contains("test bench_foo ... bench: [..]")); -} - -// https://github.com/rust-lang/cargo/issues/4287 -#[test] -fn legacy_bench_name() { - if !is_nightly() { return } - - let p = project("foo") - .file("Cargo.toml", r#" - [project] - name = "foo" - version = "0.1.0" - - [[bench]] - name = "bench" - "#) - .file("src/lib.rs", r#" - pub fn foo() {} - "#) - .file("src/bench.rs", r#" - #![feature(test)] - extern crate test; - - use test::Bencher; + .with_stdout_contains(" +running 1 test +test bench_bar ... bench: 0 ns/iter (+/- 0) - #[bench] - fn bench_foo(_: &mut Bencher) -> () { () } - "#); +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +") + .with_stderr_contains("\ +[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]") + .with_stdout_contains(" +running 1 test +test bench_foo ... bench: 0 ns/iter (+/- 0) - assert_that(p.cargo_process("bench"), execs().with_status(0).with_stderr_contains("\ -[WARNING] path `[..]src[/]bench.rs` was erroneously implicitly accepted for benchmark `bench`, -please set bench.path in Cargo.toml")); +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured +")); } + diff --git a/tests/build.rs b/tests/build.rs index f3e9445f8..4bb3fd913 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -3038,6 +3038,40 @@ fn build_all_virtual_manifest() { [..] Finished dev [unoptimized + debuginfo] target(s) in [..]\n")); } +#[test] +fn build_virtual_manifest_all_implied() { + let p = project("workspace") + .file("Cargo.toml", r#" + [workspace] + members = ["foo", "bar"] + "#) + .file("foo/Cargo.toml", r#" + [project] + name = "foo" + version = "0.1.0" + "#) + .file("foo/src/lib.rs", r#" + pub fn foo() {} + "#) + .file("bar/Cargo.toml", r#" + [project] + name = "bar" + version = "0.1.0" + "#) + .file("bar/src/lib.rs", r#" + pub fn bar() {} + "#); + + // The order in which foo and bar are built is not guaranteed + assert_that(p.cargo_process("build"), + execs().with_status(0) + .with_stderr_contains("[..] Compiling bar v0.1.0 ([..])") + .with_stderr_contains("[..] Compiling foo v0.1.0 ([..])") + .with_stderr("[..] Compiling [..] v0.1.0 ([..])\n\ + [..] Compiling [..] v0.1.0 ([..])\n\ + [..] Finished dev [unoptimized + debuginfo] target(s) in [..]\n")); +} + #[test] fn build_all_virtual_manifest_implicit_examples() { let p = project("foo") diff --git a/tests/check.rs b/tests/check.rs index 09ebfb0ac..d0a0e48ff 100644 --- a/tests/check.rs +++ b/tests/check.rs @@ -393,3 +393,34 @@ fn check_all() { .with_stderr_contains("[..] --crate-name b b[/]src[/]main.rs [..]") ); } + +#[test] +fn check_virtual_all_implied() { + let p = project("workspace") + .file("Cargo.toml", r#" + [workspace] + members = ["foo", "bar"] + "#) + .file("foo/Cargo.toml", r#" + [project] + name = "foo" + version = "0.1.0" + "#) + .file("foo/src/lib.rs", r#" + pub fn foo() {} + "#) + .file("bar/Cargo.toml", r#" + [project] + name = "bar" + version = "0.1.0" + "#) + .file("bar/src/lib.rs", r#" + pub fn bar() {} + "#); + + assert_that(p.cargo_process("check").arg("-v"), + execs().with_status(0) + .with_stderr_contains("[..] --crate-name foo foo[/]src[/]lib.rs [..]") + .with_stderr_contains("[..] --crate-name bar bar[/]src[/]lib.rs [..]") + ); +} diff --git a/tests/doc.rs b/tests/doc.rs index 119b5d32a..2c322a917 100644 --- a/tests/doc.rs +++ b/tests/doc.rs @@ -692,6 +692,37 @@ fn doc_all_virtual_manifest() { .with_stderr_contains("[..] Documenting foo v0.1.0 ([..])")); } +#[test] +fn doc_virtual_manifest_all_implied() { + let p = project("workspace") + .file("Cargo.toml", r#" + [workspace] + members = ["foo", "bar"] + "#) + .file("foo/Cargo.toml", r#" + [project] + name = "foo" + version = "0.1.0" + "#) + .file("foo/src/lib.rs", r#" + pub fn foo() {} + "#) + .file("bar/Cargo.toml", r#" + [project] + name = "bar" + version = "0.1.0" + "#) + .file("bar/src/lib.rs", r#" + pub fn bar() {} + "#); + + // The order in which foo and bar are documented is not guaranteed + assert_that(p.cargo_process("doc"), + execs().with_status(0) + .with_stderr_contains("[..] Documenting bar v0.1.0 ([..])") + .with_stderr_contains("[..] Documenting foo v0.1.0 ([..])")); +} + #[test] fn doc_all_member_dependency_same_name() { let p = project("workspace") diff --git a/tests/test.rs b/tests/test.rs index 686157a32..fb3dad0d3 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -2455,6 +2455,49 @@ fn test_all_virtual_manifest() { .with_stdout_contains("test b ... ok")); } +#[test] +fn test_virtual_manifest_all_implied() { + let p = project("workspace") + .file("Cargo.toml", r#" + [workspace] + members = ["a", "b"] + "#) + .file("a/Cargo.toml", r#" + [project] + name = "a" + version = "0.1.0" + "#) + .file("a/src/lib.rs", r#" + #[test] + fn a() {} + "#) + .file("b/Cargo.toml", r#" + [project] + name = "b" + version = "0.1.0" + "#) + .file("b/src/lib.rs", r#" + #[test] + fn b() {} + "#); + + assert_that(p.cargo_process("test"), + execs().with_status(0).with_stdout_contains("\ +running 1 test +test b ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured + +") + .with_stdout_contains("\ +running 1 test +test b ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured + +")); +} + #[test] fn test_all_member_dependency_same_name() { let p = project("workspace") diff --git a/tests/workspaces.rs b/tests/workspaces.rs index 4670d28f7..1228ae282 100644 --- a/tests/workspaces.rs +++ b/tests/workspaces.rs @@ -673,7 +673,7 @@ manifest located at: [..] } #[test] -fn virtual_build() { +fn virtual_build_all_implied() { let p = project("foo") .file("Cargo.toml", r#" [workspace] @@ -688,11 +688,7 @@ fn virtual_build() { .file("bar/src/main.rs", "fn main() {}"); p.build(); assert_that(p.cargo("build"), - execs().with_status(101) - .with_stderr("\ -error: manifest path `[..]` is a virtual manifest, but this command \ -requires running against an actual package in this workspace -")); + execs().with_status(0)); } #[test] -- 2.30.2